Add gtk_overlay_remove_overlay
authorMatthias Clasen <mclasen@redhat.com>
Sun, 3 May 2020 14:51:49 +0000 (10:51 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 5 May 2020 02:53:08 +0000 (22:53 -0400)
Now that GtkOverlay is not a container anymore,
gtk_container_remove can't be used for this anymore,
so add a separate api.

docs/reference/gtk/gtk4-sections.txt
gtk/gtkoverlay.c
gtk/gtkoverlay.h

index ee2e2b37b5b131b2107bc29f3659f26cc1826ea5..123ec712e17cd977e0aca63729668eacefc97647 100644 (file)
@@ -5485,6 +5485,7 @@ gtk_overlay_new
 gtk_overlay_set_child
 gtk_overlay_get_child
 gtk_overlay_add_overlay
+gtk_overlay_remove_overlay
 gtk_overlay_get_measure_overlay
 gtk_overlay_set_measure_overlay
 gtk_overlay_get_clip_overlay
index 6d4962dbb6c4906d9d6d309cfda73282e4ef77a7..b5c0d0d1692eef017d45f0cbb9a18e8136ddca61 100644 (file)
@@ -433,10 +433,30 @@ gtk_overlay_add_overlay (GtkOverlay *overlay,
 {
   g_return_if_fail (GTK_IS_OVERLAY (overlay));
   g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_if_fail (widget != overlay->child);
 
   gtk_widget_insert_before (widget, GTK_WIDGET (overlay), NULL);
 }
 
+/**
+ * gtk_overlay_remove_overlay:
+ * @overlay: a #GtkOverlay
+ * @widget: a #GtkWidget to be removed
+ *
+ * Removes an overlay that was added with gtk_overlay_add_overlay().
+ */
+void
+gtk_overlay_remove_overlay (GtkOverlay *overlay,
+                            GtkWidget  *widget)
+{
+  g_return_if_fail (GTK_IS_OVERLAY (overlay));
+  g_return_if_fail (GTK_IS_WIDGET (widget));
+  g_return_if_fail (gtk_widget_get_parent (widget) == GTK_WIDGET (overlay));
+  g_return_if_fail (widget != overlay->child);
+
+  gtk_widget_unparent (widget);
+}
+
 /**
  * gtk_overlay_set_measure_overlay:
  * @overlay: a #GtkOverlay
index f24365c8a45696dacf239008882b596348f38957..23216f24f73ad09653f7785c7e143a5acb8c5a85 100644 (file)
@@ -42,6 +42,9 @@ GtkWidget *gtk_overlay_new         (void);
 GDK_AVAILABLE_IN_ALL
 void       gtk_overlay_add_overlay (GtkOverlay *overlay,
                                     GtkWidget  *widget);
+GDK_AVAILABLE_IN_ALL
+void       gtk_overlay_remove_overlay (GtkOverlay *overlay,
+                                       GtkWidget  *widget);
 
 GDK_AVAILABLE_IN_ALL
 void                  gtk_overlay_set_child (GtkOverlay *overlay,